const path = require('path');
const {build} = require('esbuild');
const {esBuildDepPlugin} = require('./esBuildDepPlugin');

/**
 * 找到我们项目中依赖了哪些第三方模块, 然后先预打包到我们的缓存目录中 (`node_modules/.vite/`下)
 * @param config
 * @returns {Promise<{}>}
 */
async function scanImports(config){
  //key => 原始的模块名； value => 是此模块的es模块入口路径
  //
  const deps = {};
  const esBuildScan = await esBuildDepPlugin(config, deps);

  await build({
    absWorkingDir: config.root,

    entryPoints: [path.resolve('index.html')],
    //↑ 默认是无法支持解析index.html的
    //  需要自定义esBuild插件
    plugins: [esBuildScan],

    outfile: path.resolve('dist/bundle.js'),
    bundle: true, //要打包
    write: false, //不需要写入文件系统 我们这里只是为了查找依赖
    format: 'esm'
  });

  return deps;
}

module.exports = scanImports;

